package com.xqls.dal.model;

import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;

public class FlowMeterExample {
    protected String orderByClause;

    protected boolean distinct;

    protected List<Criteria> oredCriteria;

    public FlowMeterExample() {
        oredCriteria = new ArrayList<Criteria>();
    }

    public void setOrderByClause(String orderByClause) {
        this.orderByClause = orderByClause;
    }

    public String getOrderByClause() {
        return orderByClause;
    }

    public void setDistinct(boolean distinct) {
        this.distinct = distinct;
    }

    public boolean isDistinct() {
        return distinct;
    }

    public List<Criteria> getOredCriteria() {
        return oredCriteria;
    }

    public void or(Criteria criteria) {
        oredCriteria.add(criteria);
    }

    public Criteria or() {
        Criteria criteria = createCriteriaInternal();
        oredCriteria.add(criteria);
        return criteria;
    }

    public Criteria createCriteria() {
        Criteria criteria = createCriteriaInternal();
        if (oredCriteria.size() == 0) {
            oredCriteria.add(criteria);
        }
        return criteria;
    }

    protected Criteria createCriteriaInternal() {
        Criteria criteria = new Criteria();
        return criteria;
    }

    public void clear() {
        oredCriteria.clear();
        orderByClause = null;
        distinct = false;
    }

    protected abstract static class GeneratedCriteria {
        protected List<Criterion> criteria;

        protected GeneratedCriteria() {
            super();
            criteria = new ArrayList<Criterion>();
        }

        public boolean isValid() {
            return criteria.size() > 0;
        }

        public List<Criterion> getAllCriteria() {
            return criteria;
        }

        public List<Criterion> getCriteria() {
            return criteria;
        }

        protected void addCriterion(String condition) {
            if (condition == null) {
                throw new RuntimeException("Value for condition cannot be null");
            }
            criteria.add(new Criterion(condition));
        }

        protected void addCriterion(String condition, Object value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value));
        }

        protected void addCriterion(String condition, Object value1, Object value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            criteria.add(new Criterion(condition, value1, value2));
        }

        protected void addCriterionForJDBCDate(String condition, Date value, String property) {
            if (value == null) {
                throw new RuntimeException("Value for " + property + " cannot be null");
            }
            addCriterion(condition, new java.sql.Date(value.getTime()), property);
        }

        protected void addCriterionForJDBCDate(String condition, List<Date> values, String property) {
            if (values == null || values.size() == 0) {
                throw new RuntimeException("Value list for " + property + " cannot be null or empty");
            }
            List<java.sql.Date> dateList = new ArrayList<java.sql.Date>();
            Iterator<Date> iter = values.iterator();
            while (iter.hasNext()) {
                dateList.add(new java.sql.Date(iter.next().getTime()));
            }
            addCriterion(condition, dateList, property);
        }

        protected void addCriterionForJDBCDate(String condition, Date value1, Date value2, String property) {
            if (value1 == null || value2 == null) {
                throw new RuntimeException("Between values for " + property + " cannot be null");
            }
            addCriterion(condition, new java.sql.Date(value1.getTime()), new java.sql.Date(value2.getTime()), property);
        }

        public Criteria andFlowIdIsNull() {
            addCriterion("flow_id is null");
            return (Criteria) this;
        }

        public Criteria andFlowIdIsNotNull() {
            addCriterion("flow_id is not null");
            return (Criteria) this;
        }

        public Criteria andFlowIdEqualTo(Integer value) {
            addCriterion("flow_id =", value, "flowId");
            return (Criteria) this;
        }

        public Criteria andFlowIdNotEqualTo(Integer value) {
            addCriterion("flow_id <>", value, "flowId");
            return (Criteria) this;
        }

        public Criteria andFlowIdGreaterThan(Integer value) {
            addCriterion("flow_id >", value, "flowId");
            return (Criteria) this;
        }

        public Criteria andFlowIdGreaterThanOrEqualTo(Integer value) {
            addCriterion("flow_id >=", value, "flowId");
            return (Criteria) this;
        }

        public Criteria andFlowIdLessThan(Integer value) {
            addCriterion("flow_id <", value, "flowId");
            return (Criteria) this;
        }

        public Criteria andFlowIdLessThanOrEqualTo(Integer value) {
            addCriterion("flow_id <=", value, "flowId");
            return (Criteria) this;
        }

        public Criteria andFlowIdIn(List<Integer> values) {
            addCriterion("flow_id in", values, "flowId");
            return (Criteria) this;
        }

        public Criteria andFlowIdNotIn(List<Integer> values) {
            addCriterion("flow_id not in", values, "flowId");
            return (Criteria) this;
        }

        public Criteria andFlowIdBetween(Integer value1, Integer value2) {
            addCriterion("flow_id between", value1, value2, "flowId");
            return (Criteria) this;
        }

        public Criteria andFlowIdNotBetween(Integer value1, Integer value2) {
            addCriterion("flow_id not between", value1, value2, "flowId");
            return (Criteria) this;
        }

        public Criteria andCloseMonthIsNull() {
            addCriterion("close_month is null");
            return (Criteria) this;
        }

        public Criteria andCloseMonthIsNotNull() {
            addCriterion("close_month is not null");
            return (Criteria) this;
        }

        public Criteria andCloseMonthEqualTo(Date value) {
            addCriterionForJDBCDate("close_month =", value, "closeMonth");
            return (Criteria) this;
        }

        public Criteria andCloseMonthNotEqualTo(Date value) {
            addCriterionForJDBCDate("close_month <>", value, "closeMonth");
            return (Criteria) this;
        }

        public Criteria andCloseMonthGreaterThan(Date value) {
            addCriterionForJDBCDate("close_month >", value, "closeMonth");
            return (Criteria) this;
        }

        public Criteria andCloseMonthGreaterThanOrEqualTo(Date value) {
            addCriterionForJDBCDate("close_month >=", value, "closeMonth");
            return (Criteria) this;
        }

        public Criteria andCloseMonthLessThan(Date value) {
            addCriterionForJDBCDate("close_month <", value, "closeMonth");
            return (Criteria) this;
        }

        public Criteria andCloseMonthLessThanOrEqualTo(Date value) {
            addCriterionForJDBCDate("close_month <=", value, "closeMonth");
            return (Criteria) this;
        }

        public Criteria andCloseMonthIn(List<Date> values) {
            addCriterionForJDBCDate("close_month in", values, "closeMonth");
            return (Criteria) this;
        }

        public Criteria andCloseMonthNotIn(List<Date> values) {
            addCriterionForJDBCDate("close_month not in", values, "closeMonth");
            return (Criteria) this;
        }

        public Criteria andCloseMonthBetween(Date value1, Date value2) {
            addCriterionForJDBCDate("close_month between", value1, value2, "closeMonth");
            return (Criteria) this;
        }

        public Criteria andCloseMonthNotBetween(Date value1, Date value2) {
            addCriterionForJDBCDate("close_month not between", value1, value2, "closeMonth");
            return (Criteria) this;
        }

        public Criteria andRecordTimeIsNull() {
            addCriterion("record_time is null");
            return (Criteria) this;
        }

        public Criteria andRecordTimeIsNotNull() {
            addCriterion("record_time is not null");
            return (Criteria) this;
        }

        public Criteria andRecordTimeEqualTo(Date value) {
            addCriterion("record_time =", value, "recordTime");
            return (Criteria) this;
        }

        public Criteria andRecordTimeNotEqualTo(Date value) {
            addCriterion("record_time <>", value, "recordTime");
            return (Criteria) this;
        }

        public Criteria andRecordTimeGreaterThan(Date value) {
            addCriterion("record_time >", value, "recordTime");
            return (Criteria) this;
        }

        public Criteria andRecordTimeGreaterThanOrEqualTo(Date value) {
            addCriterion("record_time >=", value, "recordTime");
            return (Criteria) this;
        }

        public Criteria andRecordTimeLessThan(Date value) {
            addCriterion("record_time <", value, "recordTime");
            return (Criteria) this;
        }

        public Criteria andRecordTimeLessThanOrEqualTo(Date value) {
            addCriterion("record_time <=", value, "recordTime");
            return (Criteria) this;
        }

        public Criteria andRecordTimeIn(List<Date> values) {
            addCriterion("record_time in", values, "recordTime");
            return (Criteria) this;
        }

        public Criteria andRecordTimeNotIn(List<Date> values) {
            addCriterion("record_time not in", values, "recordTime");
            return (Criteria) this;
        }

        public Criteria andRecordTimeBetween(Date value1, Date value2) {
            addCriterion("record_time between", value1, value2, "recordTime");
            return (Criteria) this;
        }

        public Criteria andRecordTimeNotBetween(Date value1, Date value2) {
            addCriterion("record_time not between", value1, value2, "recordTime");
            return (Criteria) this;
        }

        public Criteria andAccumuLateIsNull() {
            addCriterion("accumu_Late is null");
            return (Criteria) this;
        }

        public Criteria andAccumuLateIsNotNull() {
            addCriterion("accumu_Late is not null");
            return (Criteria) this;
        }

        public Criteria andAccumuLateEqualTo(Double value) {
            addCriterion("accumu_Late =", value, "accumuLate");
            return (Criteria) this;
        }

        public Criteria andAccumuLateNotEqualTo(Double value) {
            addCriterion("accumu_Late <>", value, "accumuLate");
            return (Criteria) this;
        }

        public Criteria andAccumuLateGreaterThan(Double value) {
            addCriterion("accumu_Late >", value, "accumuLate");
            return (Criteria) this;
        }

        public Criteria andAccumuLateGreaterThanOrEqualTo(Double value) {
            addCriterion("accumu_Late >=", value, "accumuLate");
            return (Criteria) this;
        }

        public Criteria andAccumuLateLessThan(Double value) {
            addCriterion("accumu_Late <", value, "accumuLate");
            return (Criteria) this;
        }

        public Criteria andAccumuLateLessThanOrEqualTo(Double value) {
            addCriterion("accumu_Late <=", value, "accumuLate");
            return (Criteria) this;
        }

        public Criteria andAccumuLateIn(List<Double> values) {
            addCriterion("accumu_Late in", values, "accumuLate");
            return (Criteria) this;
        }

        public Criteria andAccumuLateNotIn(List<Double> values) {
            addCriterion("accumu_Late not in", values, "accumuLate");
            return (Criteria) this;
        }

        public Criteria andAccumuLateBetween(Double value1, Double value2) {
            addCriterion("accumu_Late between", value1, value2, "accumuLate");
            return (Criteria) this;
        }

        public Criteria andAccumuLateNotBetween(Double value1, Double value2) {
            addCriterion("accumu_Late not between", value1, value2, "accumuLate");
            return (Criteria) this;
        }

        public Criteria andTenantNoIsNull() {
            addCriterion("tenant_no is null");
            return (Criteria) this;
        }

        public Criteria andTenantNoIsNotNull() {
            addCriterion("tenant_no is not null");
            return (Criteria) this;
        }

        public Criteria andTenantNoEqualTo(String value) {
            addCriterion("tenant_no =", value, "tenantNo");
            return (Criteria) this;
        }

        public Criteria andTenantNoNotEqualTo(String value) {
            addCriterion("tenant_no <>", value, "tenantNo");
            return (Criteria) this;
        }

        public Criteria andTenantNoGreaterThan(String value) {
            addCriterion("tenant_no >", value, "tenantNo");
            return (Criteria) this;
        }

        public Criteria andTenantNoGreaterThanOrEqualTo(String value) {
            addCriterion("tenant_no >=", value, "tenantNo");
            return (Criteria) this;
        }

        public Criteria andTenantNoLessThan(String value) {
            addCriterion("tenant_no <", value, "tenantNo");
            return (Criteria) this;
        }

        public Criteria andTenantNoLessThanOrEqualTo(String value) {
            addCriterion("tenant_no <=", value, "tenantNo");
            return (Criteria) this;
        }

        public Criteria andTenantNoLike(String value) {
            addCriterion("tenant_no like", value, "tenantNo");
            return (Criteria) this;
        }

        public Criteria andTenantNoNotLike(String value) {
            addCriterion("tenant_no not like", value, "tenantNo");
            return (Criteria) this;
        }

        public Criteria andTenantNoIn(List<String> values) {
            addCriterion("tenant_no in", values, "tenantNo");
            return (Criteria) this;
        }

        public Criteria andTenantNoNotIn(List<String> values) {
            addCriterion("tenant_no not in", values, "tenantNo");
            return (Criteria) this;
        }

        public Criteria andTenantNoBetween(String value1, String value2) {
            addCriterion("tenant_no between", value1, value2, "tenantNo");
            return (Criteria) this;
        }

        public Criteria andTenantNoNotBetween(String value1, String value2) {
            addCriterion("tenant_no not between", value1, value2, "tenantNo");
            return (Criteria) this;
        }

        public Criteria andIntakeFlowIsNull() {
            addCriterion("intake_flow is null");
            return (Criteria) this;
        }

        public Criteria andIntakeFlowIsNotNull() {
            addCriterion("intake_flow is not null");
            return (Criteria) this;
        }

        public Criteria andIntakeFlowEqualTo(String value) {
            addCriterion("intake_flow =", value, "intakeFlow");
            return (Criteria) this;
        }

        public Criteria andIntakeFlowNotEqualTo(String value) {
            addCriterion("intake_flow <>", value, "intakeFlow");
            return (Criteria) this;
        }

        public Criteria andIntakeFlowGreaterThan(String value) {
            addCriterion("intake_flow >", value, "intakeFlow");
            return (Criteria) this;
        }

        public Criteria andIntakeFlowGreaterThanOrEqualTo(String value) {
            addCriterion("intake_flow >=", value, "intakeFlow");
            return (Criteria) this;
        }

        public Criteria andIntakeFlowLessThan(String value) {
            addCriterion("intake_flow <", value, "intakeFlow");
            return (Criteria) this;
        }

        public Criteria andIntakeFlowLessThanOrEqualTo(String value) {
            addCriterion("intake_flow <=", value, "intakeFlow");
            return (Criteria) this;
        }

        public Criteria andIntakeFlowLike(String value) {
            addCriterion("intake_flow like", value, "intakeFlow");
            return (Criteria) this;
        }

        public Criteria andIntakeFlowNotLike(String value) {
            addCriterion("intake_flow not like", value, "intakeFlow");
            return (Criteria) this;
        }

        public Criteria andIntakeFlowIn(List<String> values) {
            addCriterion("intake_flow in", values, "intakeFlow");
            return (Criteria) this;
        }

        public Criteria andIntakeFlowNotIn(List<String> values) {
            addCriterion("intake_flow not in", values, "intakeFlow");
            return (Criteria) this;
        }

        public Criteria andIntakeFlowBetween(String value1, String value2) {
            addCriterion("intake_flow between", value1, value2, "intakeFlow");
            return (Criteria) this;
        }

        public Criteria andIntakeFlowNotBetween(String value1, String value2) {
            addCriterion("intake_flow not between", value1, value2, "intakeFlow");
            return (Criteria) this;
        }

        public Criteria andCompanyNameIsNull() {
            addCriterion("company_name is null");
            return (Criteria) this;
        }

        public Criteria andCompanyNameIsNotNull() {
            addCriterion("company_name is not null");
            return (Criteria) this;
        }

        public Criteria andCompanyNameEqualTo(String value) {
            addCriterion("company_name =", value, "companyName");
            return (Criteria) this;
        }

        public Criteria andCompanyNameNotEqualTo(String value) {
            addCriterion("company_name <>", value, "companyName");
            return (Criteria) this;
        }

        public Criteria andCompanyNameGreaterThan(String value) {
            addCriterion("company_name >", value, "companyName");
            return (Criteria) this;
        }

        public Criteria andCompanyNameGreaterThanOrEqualTo(String value) {
            addCriterion("company_name >=", value, "companyName");
            return (Criteria) this;
        }

        public Criteria andCompanyNameLessThan(String value) {
            addCriterion("company_name <", value, "companyName");
            return (Criteria) this;
        }

        public Criteria andCompanyNameLessThanOrEqualTo(String value) {
            addCriterion("company_name <=", value, "companyName");
            return (Criteria) this;
        }

        public Criteria andCompanyNameLike(String value) {
            addCriterion("company_name like", value, "companyName");
            return (Criteria) this;
        }

        public Criteria andCompanyNameNotLike(String value) {
            addCriterion("company_name not like", value, "companyName");
            return (Criteria) this;
        }

        public Criteria andCompanyNameIn(List<String> values) {
            addCriterion("company_name in", values, "companyName");
            return (Criteria) this;
        }

        public Criteria andCompanyNameNotIn(List<String> values) {
            addCriterion("company_name not in", values, "companyName");
            return (Criteria) this;
        }

        public Criteria andCompanyNameBetween(String value1, String value2) {
            addCriterion("company_name between", value1, value2, "companyName");
            return (Criteria) this;
        }

        public Criteria andCompanyNameNotBetween(String value1, String value2) {
            addCriterion("company_name not between", value1, value2, "companyName");
            return (Criteria) this;
        }
    }

    public static class Criteria extends GeneratedCriteria {

        protected Criteria() {
            super();
        }
    }

    public static class Criterion {
        private String condition;

        private Object value;

        private Object secondValue;

        private boolean noValue;

        private boolean singleValue;

        private boolean betweenValue;

        private boolean listValue;

        private String typeHandler;

        public String getCondition() {
            return condition;
        }

        public Object getValue() {
            return value;
        }

        public Object getSecondValue() {
            return secondValue;
        }

        public boolean isNoValue() {
            return noValue;
        }

        public boolean isSingleValue() {
            return singleValue;
        }

        public boolean isBetweenValue() {
            return betweenValue;
        }

        public boolean isListValue() {
            return listValue;
        }

        public String getTypeHandler() {
            return typeHandler;
        }

        protected Criterion(String condition) {
            super();
            this.condition = condition;
            this.typeHandler = null;
            this.noValue = true;
        }

        protected Criterion(String condition, Object value, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.typeHandler = typeHandler;
            if (value instanceof List<?>) {
                this.listValue = true;
            } else {
                this.singleValue = true;
            }
        }

        protected Criterion(String condition, Object value) {
            this(condition, value, null);
        }

        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
            super();
            this.condition = condition;
            this.value = value;
            this.secondValue = secondValue;
            this.typeHandler = typeHandler;
            this.betweenValue = true;
        }

        protected Criterion(String condition, Object value, Object secondValue) {
            this(condition, value, secondValue, null);
        }
    }
}